package com.jy.wms.dao;

import com.jy.wms.common.base.BaseDao;
import com.jy.wms.pojo.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @ClassName: WmsDistributionMapper.java
 * @Description: 发运订单-分配
 * @Author yjs
 * @Date Tue Oct 24 13:54:03 GMT+08:00 2017
 */
public interface WmsDistributionMapper extends BaseDao<WmsDistribution> {
    /**
     * 根据发运订单编号-查询发运订单明细
     * @param id
     * @param stringList
     * @param bs
     * @param zbfh
     * @return
     */
    List<WmsShipmentOrderDetailed> searchOrderDetailed(@Param("id") String id, @Param("stringList") List<String> stringList, @Param("bs") String bs, @Param("zbfh") String zbfh);

    /**
     * 根据发运订单编号-查询发运订单明细
     *
     * @param id
     * @param bs
     * @param zbfh
     * @return
     */
    List<WmsShipmentOrderDetailed> searchOrderDetailed2(@Param("id") String id, @Param("bs") String bs, @Param("zbfh") String zbfh);

    /**
     * 根据发运订单明细ID-查询拆单表
     *
     * @param id
     * @param fpzt
     * @return
     */
    public List<WmsSplit> searchWmsSplit(@Param("id") String id, @Param("fpzt") String fpzt);


    /**
     * 添加分配信息
     *
     * @param wmsDistribution
     * @return
     */
    public Integer baseInsert(@Param("WmsDistribution") WmsDistribution wmsDistribution);

    /**
     * 添加分配明细信息
     *
     * @param wmsDistributionHistory
     * @return
     */
    public Integer baseInsertDetail(@Param("WmsDistributionHistory") WmsDistributionHistory wmsDistributionHistory);

    /**
     * 发运订单明细数据查询库存表数据
     *
     * @param kwid
     * @param hppc
     * @param scrq
     * @param hpid
     * @param hzid
     * @param ckid
     * @param sxList
     * @param zzGz
     * @param lxList
     * @return
     */
    public List<WmsStock> searchWmsStock(@Param("kwid") String kwid, @Param("hppc") String hppc, @Param("scrq") String scrq, @Param("hpid") String hpid, @Param("hzid") String hzid, @Param("ckid") String ckid, @Param("sxList") List<String> sxList, @Param("zzGz") String zzGz, @Param("lxList") List<String> lxList);

    /**
     * 查询周转规则排序
     *
     * @param hzid
     * @param ckId
     * @return
     */
    public String searchZzgz(@Param("hzid") String hzid, @Param("ckId") String ckId);

    /**
     * 修改库存待下架数量(待拣货数量)
     *
     * @param wmsStock
     * @return
     */
    public Integer updateWmsStock(@Param("WmsStock") WmsStock wmsStock);

    /**
     * 库存数量不足时,查看货主表(数量不足是否允许出库)
     *
     * @param hzid
     * @return
     */
    public WmsOwner searchHzSlbuck(@Param("hzid") String hzid);

    /**
     * 查询分配是否多批次
     * @param id
     * @param hzid
     * @param ckId
     * @return
     */
    public List<WmsDistribution> searchPcList(@Param("id") String id, @Param("hzid") String hzid, @Param("ckid") String ckId);

    /**
     * 查询发运订单下的数据是否有部分分配数据
     *
     * @param fyddid
     * @return
     */
    public Integer countFydd(@Param("fyddid") String fyddid, @Param("fymxzt") String fymxzt);
    /**
     * 修改发运单状态
     *
     * @param ssfyddid
     * @param fyzt
     * @param dpczt
     * @param jhrwzt
     * @return
     */
    public Integer updateOrder(@Param("ssfyddid") String ssfyddid, @Param("fyzt") String fyzt, @Param("dpczt") String dpczt, @Param("jhrwzt") String jhrwzt, @Param("jhzt") String jhzt, @Param("zxzt") String zxzt);

    /**
     * 查询发运订单明细下的分配数量
     *
     * @param fymxid
     * @return
     */
    public String countFpsl(@Param("fymxid") String fymxid);
    /**
     * 修改发运明细状态以及发运明细（分配）主单位数量以及（分配）箱单位数量
     *
     * @param ssfymxid
     * @param fymxzt
     * @param fpxdwsl
     * @param fpZsl
     * @return
     */
    public Integer updateOrderDetail(@Param("ssfymxid") String ssfymxid, @Param("fymxzt") String fymxzt, @Param("fpxdwsl") String fpxdwsl, @Param("fpZsl") String fpZsl);

    /**
     * 修改发运明细状态以及发运明细（分配）主单位数量以及（分配）箱单位数量
     *
     * @param ssfymxid
     * @param jhzt
     * @return
     */
    public Integer updateOrderDetail1(@Param("ssfymxid") String ssfymxid, @Param("jhzt") String jhzt);
    /**
     * 取包装明细箱类型的数量
     *
     * @param bzlx
     * @param hpid
     * @param hzid
     * @return
     */
    public WmsPackingDetailed searchPackingDetailed(@Param("bzlx") String bzlx, @Param("hpid") String hpid, @Param("hzid") String hzid);

    /**
     * 统计库存内的可用数量
     *
     * @param hpid
     * @param jhbmx
     * @param hzid
     * @param ckid
     * @param zzGz
     * @param sxList
     * @param hppc2
     * @param kwlx
     * @return
     */
    public Integer countKC(@Param("hpid") String hpid, @Param("jhbmx") String jhbmx, @Param("hzid") String hzid, @Param("ckid") String ckid, @Param("zzGz") String zzGz, @Param("sxList") List<String> sxList, @Param("hppc") String hppc2, @Param("kwlx") String kwlx);

    /**
     * 查询拣货库位表对应的库位
     *
     * @param hpid
     * @param jhbmx
     * @param hzid
     * @param ckid
     * @param zzGz
     * @param sxList
     * @param hppc2
     * @param kwlx
     * @return
     */
    public List<WmsStock> searchKC(@Param("hpid") String hpid, @Param("jhbmx") String jhbmx, @Param("hzid") String hzid, @Param("ckid") String ckid, @Param("zzGz") String zzGz, @Param("sxList") List<String> sxList, @Param("hppc") String hppc2, @Param("kwlx") String kwlx);

    /**
     * 查询拣货库位表对应的库位
     *
     * @param hpid
     * @param jhbmx
     * @param hzid
     * @param ckid
     * @param zzGz
     * @param sxList
     * @return
     */
    public List<WmsStock> searchKC3(@Param("hpid") String hpid, @Param("jhbmx") String jhbmx, @Param("hzid") String hzid, @Param("ckid") String ckid, @Param("zzGz") String zzGz, @Param("sxList") List<String> sxList);

    /**
     * 存储库位查询库存
     *
     * @param hpid
     * @param hzid
     * @param ckid
     * @param zzGz
     * @param sxList
     * @return
     */
    public List<WmsStock> searchKC6(@Param("hpid") String hpid, @Param("hzid") String hzid, @Param("ckid") String ckid, @Param("zzGz") String zzGz, @Param("sxList") List<String> sxList);

    /**
     * 判断拣货表库位类型
     *
     * @param hpid
     * @param jhbmx
     * @return
     */
    public WmsThreeLevelPickingLocation searchJh(@Param("hpid") String hpid, @Param("jhbmx") String jhbmx, @Param("ckid") String ckid);
    /**
     * 查询拣货库位表对应的库位
     *
     * @param hpid
     * @param jhbmx
     * @param hzid
     * @param ckid
     * @param zzGz
     * @param sxList
     * @param hppcList
     * @param lxList2
     * @return
     */
    public List<WmsStock> searchKC4(@Param("hpid") String hpid, @Param("jhbmx") String jhbmx, @Param("hzid") String hzid, @Param("ckid") String ckid, @Param("zzGz") String zzGz, @Param("sxList") List<String> sxList, @Param("hppcList") List<String> hppcList, @Param("lxList") List<String> lxList2);

    /**
     * 查询拣货库位表对应的库位
     *
     * @param hpid
     * @param jhbmx
     * @param hzid
     * @param ckid
     * @param zzGz
     * @param sxList
     * @param hppc2
     * @param kwlx
     * @return
     */
    public List<WmsStock> searchKC2(@Param("hpid") String hpid, @Param("jhbmx") String jhbmx, @Param("hzid") String hzid, @Param("ckid") String ckid, @Param("zzGz") String zzGz, @Param("sxList") List<String> sxList, @Param("hppc") String hppc2, @Param("kwlx") List<String> kwlx);

    /**
     * //查询内包装拣货库位表对应的库位
     *
     * @param hpid
     * @return
     */
    public WmsLibraryPosition searchJhkw1(@Param("hpid") String hpid);

    /**
     * //查询箱拣货库位表对应的库位
     *
     * @param hpid
     * @return
     */
    public WmsLibraryPosition searchJhkw2(@Param("hpid") String hpid);

    /**
     * //查询托盘拣货库位表对应的库位
     * @param hpid
     * @return
     */
    public WmsLibraryPosition searchJhkw3(@Param("hpid") String hpid);

    /**
     * 更改拆单状态
     * @param id
     * @param cdzt
     * @return
     */
    public Integer updateWmsSplit(@Param("id") String id, @Param("cdzt") String cdzt);

    /**
     * 查询分配仓库表
     *
     * @param cdid
     * @param hzid
     * @param ckid
     * @return
     */
    public List<WmsDistribution> searchWmsStock_s(@Param("cdid") String cdid, @Param("hzid") String hzid, @Param("ckid") String ckid);

    /**
     * 取消分配,更改库存待下架数量
     * @param kcid
     * @param sl
     * @return
     */
    public Integer updateKcSl(@Param("kcid") String kcid, @Param("sl") String sl);

    /**
     * 删除分配表数据
     *
     * @param id
     * @return
     */
    public Integer deleteFp(@Param("id") String id);

    /**
     * 查询发运订单数据
     *
     * @param id
     * @return
     */
    public WmsShipmentOrder searchOrder(@Param("id") String id);

    /**
     * 查看发运订单明细
     *
     * @param wmsShipmentOrderDetailed
     * @return
     */
    public List<WmsShipmentOrderDetailed> searchDetailed(@Param("WmsShipmentOrderDetailed") WmsShipmentOrderDetailed wmsShipmentOrderDetailed);

    /**
     * 查看分配明细
     * @param wmsDistribution
     * @return
     */
    public List<WmsDistribution> distributionDetailed(@Param("WmsDistribution") WmsDistribution wmsDistribution);

    /**
     * 查询该货品批次(存储库位,箱拣货库位,箱/件拣货库位,件拣货库位)
     *
     * @param hpid
     * @param hzid
     * @param ckId
     * @return
     */
    public List<String> searchHppc(@Param("hpid") String hpid, @Param("hzid") String hzid, @Param("ckId") String ckId);

    /**
     * 查询货品对应的拣货库位类型(根据包装类型找到对应的拣货库位表,结合拆单表内的货品ID)
     * @param hpid
     * @param ckId
     * @param jhBmx
     * @return
     */
    public String searchJhlx(@Param("hpid") String hpid, @Param("ckId") String ckId, @Param("jhBmx") String jhBmx);

    /**
     * 查看分配明细记录
     *
     * @param wmsDistribution
     * @return
     */
    public List<WmsDistribution> searchDistributionDetailed(@Param("WmsDistribution") WmsDistribution wmsDistribution);

    /**
     * 修改分配明细记录(修改分配数量)
     *
     * @param wmsDistribution
     * @return
     */
    public Integer updateDistributionSl(@Param("WmsDistribution") WmsDistribution wmsDistribution);

    /**
     * 查询单条拆单信息
     *
     * @param id
     * @return
     */
    public WmsSplit searchWmsSplit2(@Param("id") String id);

    /**
     * 查询发运订单明细
     *
     * @param id
     * @return
     */
    public WmsShipmentOrderDetailed searchDdmx(@Param("id") String id);

    /**
     * 查询发运订单下的全部分配数量
     *
     * @param ssfyddid
     * @return
     */
    public WmsDistribution searchFpSl3(@Param("ssfyddid") String ssfyddid);

    /**
     * 查询发运订单明细下的全部分配数量
     *
     * @param ssfymxid
     * @return
     */
    public WmsDistribution searchFpSl2(@Param("ssfymxid") String ssfymxid);

    /**
     * 查询单个分配数量
     *
     * @param id
     * @return
     */
    public WmsDistribution searchFpSl(@Param("id") String id);

    /**
     * 查询库存待下架数量
     *
     * @param kcid
     * @return
     */
    public WmsStock searchKc5(@Param("id") String kcid);

    /**
     * 拆单ID查询分配数据
     *
     * @param cdid
     * @return
     */
    public List<WmsDistribution> searchFpSl4(@Param("cdid") String cdid);
}
